package com.bear.线性结构.栈;

/**    栈的实现使用数组的方式，遵循先进后出的原则
 * <简述>
 * <详细描述>
 *
 * @author LiuShanshan
 * @version $Id$
 */
public class StackTest {
    public static void main(String[] args) {
        Stack stack = new Stack(3);
        stack.show();
        System.out.println("===============添加数据==================");
        stack.add(1);
        stack.add(2);
        stack.add(3);
        stack.show();

    }
}

class Stack {
    // 数组
    private int[] arry ;
    // top
    private int top;
    // 放入的值
    private int value;

    Stack(int length){
        this.arry = new int[length];
        this.top = -1;
    }

    //是否满
    private boolean isFull(){
        return arry.length == top + 1;
    }

    // 是否为空
    private boolean isEntity(){
        return top == -1;
    }

    // 添加
    public void add (int value){
        // 判断是否已满
        if(isFull()){
            System.out.println("容量已满");
            return;
        }
        // 放入值，top+1
        this.value = value;
        top ++;
        arry[top] = this.value;
    }

    // 查，显示
    public void show(){
        // 是否为空
        if(isEntity()){
            System.out.println("容器为空，请先添加数据");
            return;
        }
        // 显示
        for(int i = top; i>= 0; i--){
            System.out.printf("\n输出数据:%s", arry[i]);
        }
    }

}
